import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import ElementPlus, { ElMessage } from 'element-plus';
import 'element-plus/theme-chalk/index.css';
import locale from 'element-plus/es/locale/lang/zh-cn'
import axios from "axios";

//测试中
//import 'jquery/dist/jquery.min'
import 'bootstrap/dist/js/bootstrap.min.js'
import 'bootstrap/dist/css/bootstrap.min.css'

const app=createApp(App).use(store).use(router).use(scroll).use(ElementPlus, { locale }).mount("#app");

//配置请求地址前缀
axios.defaults.baseURL="http://localhost:8080"

//添加请求拦截器，自动添加请求头
axios.interceptors.request.use(
    config => {

        //添加请求头
        const token = sessionStorage.getItem('token'); // 从本地存储获取 token
        if (token) {
            //如果存在 token，将其添加到请求头中
            config.headers.Authorization = `${token}`;
        }
        return config;
    },
    error => {
        // 请求错误处理
        return Promise.reject(error);
    }
);

// 添加响应拦截器，状态码为401时，自动跳转到登录界面
axios.interceptors.response.use(
    response => {

        //可以在这做点什么
        return response;
    },
    error => {

        const originalRequest = error.config;

        if (error.response&&error.response.status === 401 && !originalRequest._retry) {
            // 防止无限循环请求
            originalRequest._retry = true;

            // 清除 token 或者更新 token 后重新发送请求
            sessionStorage.removeItem("token") // 清除 token
            sessionStorage.removeItem("studentId")

            ElMessage
            .error({
                message: "请先进行登录哦"
            });

            router.push("/login"); // 跳转到登录页
        }

        return Promise.reject(error);
    }
);

